最近很多人在讨论 Skills,但是很少人知道怎么构建一个自己专属的 Skills,今天我用全文给大家讲清楚。

从提示词到 Skills,本质上是 SOP 工作流的进化和迁移,懂提示词的人对 Skills 是很容易上手,所以我建议大家学习 Skills 的时候,先去学习提示词。

大多数人在写 Skills 时第一件事便是错的,

他们将 Skills 当作强化版的提示词,并且想要把所有背景与要求一次性全部塞进去,最终导致文件又长又杂乱。

使得 AI 要么难以找到触发的时机,要么在加载后把上下文挤满了,使得输出的质量不但没有提升反而降低了。

如果想弄清楚技能包是怎么回事,需要知道它的运行机制。

【1】每一个 Skills 就如同一个文件夹,里头装着说明文档、脚本以及参考资料,就是把做事的流程编写成能够被调用的文件。

【2】它有着极为精妙的设计在于分层加载

AI 仅仅记着每个技能的名称以及一句话的描述内容,只有当确认任务和其相关时才会去读取正文部分,在用到具体资料的时候才会打开对应的文件,就算装入几十个技能也不会让速度变卡。

【3】描述的内容直接影响着触发的概率,

因此必须要把做什么以及什么时候启用写得清清楚楚,那些写得含含糊糊的技能包,要不就是永远都不会触发,要不就是在错误的场景里胡乱触发,这两种结果都是没有任何意义的。

【4】另外正文里面,还有一条隐形的界限,要控制在 500 行以内

过长的指令会分散注意力,详细的资料会被拆分到 references 目录里根据需要去读取,写不下的细节就放到附属文件当中,主文件要保持简洁明了。

同时脚本的价值被大大地低估了,放进 scripts 目录里的代码在执行的时候不会占用上下文内容,AI 只需要知道运行命令就行,并且格式校验和数据处理就交给脚本来做,比写在正文里面要可靠的多。

并非所有的任务都适合被制作成技能包,高频重复、流程固定、能够脚本化的这三类任务才具备写入的价值。

如果把偶尔才会用到一次的需求写进技能包里面,那纯粹是给自己增添维护的麻烦,还不如不写。

另外动手搭建 SKILLS 其实只需要四个步骤,建立文件夹、写说明文档、把脚本放 scripts 里、把长文档放 references 里。

而且命名的时候只能使用英文小写字母加上连字符,且必须要和文件夹的名称保持一致,如果违反了规则就会直接出现加载失败的情况。

每次使用的时候都要注意触发是否精准、输出是否稳定,如果发现有偏差就要回去修改描述和流程,

因此需要经过几轮迭代之后才可以稳定下来。

有很多人区分不了 Skills 和 MCP,MCP 负责连接外部工具,Skills 负责管理让 AI 做事的流程,并且两者搭配使用不

会产生冲突。

与一次性使用的提示词相比较,Skills 在编写完成之后能够永久发挥作用,就算更换对话或者更换任务,

依然能够正常调用它,而提示词需要反复丢给大模型。

但是,我说的是但是,并不是所有的内容都适合做成 Skills,如果只是一次性或者临时性的任务,真的没必要做成 Skills,因为维护成本挺高的,也不方便快速调整。

如果你有自己的专属写作提示词,那就没必要做成 skills(听劝)。

文章结尾,我也给大家分享 skills 的制作流程和方法论

一、目录结构

skill-name/
├── SKILL.md # 必须 - 主指令文件
├── reference.md # 可选 - 详细参考文档
├── examples.md # 可选 - 使用示例
└── scripts/ # 可选 - 工具脚本
├── validate.py
└── helper.sh

二、存储位置

个人技能
~/skills/skill-name/
所有项目可用
项目技能
./skills/skill-name/
仅当前仓库可用

三、SKILL.md 文件结构

---
name: contentany
description: 技能描述,说明做什么以及何时触发
disable-model-invocation: true
---

技能名称

Instructions


清晰的分步指引

Examples


具体使用示例

必填字段

name:最多64字符,仅小写字母/数字/连字符
唯一标识符
description:最多1024字符,非空
Agent判断何时应用此技能

四、运行流程

发现阶段
Agent读取用户消息
系统将可用skills的description注入系统提示词
Agent根据description判断是否需要调用某个skill
加载阶段
匹配到相关skill后,Agent读取SKILL.md文件
如需详细信息,按引用路径读取reference.md等附属文件
引用层级建议保持在一层,避免深层嵌套
执行阶段
Agent按照SKILL.md中的指令执行任务
如有scripts目录中的脚本,根据指令决定是执行还是作为参考
按照模板或工作流完成具体操作
验证阶段
如果skill中包含验证步骤,执行验证脚本
验证失败则修复后重新验证
验证通过后完成任务

五、触发机制

显式调用:
disable-model-invocation: true
用户明确提及skill名称时触发
自动调用:
不设置该字段
Agent根据上下文自动判断是否触发